func searchRange(nums []int, target int) []int {
	l, r := 0, len(nums)-1
	for l <= r {
		// 求中位数，进行二分查找
		mid := l + (r-l)>>1
		if nums[mid] > target {
			// 如果中位数比target大，在左边界查找
			r = mid - 1
		} else if nums[mid] < target {
			// 如果中位数比target小，在右边界查找
			l = mid + 1
		} else {
			// 如果找到了，普通的二分返回即可，但是这里化还需要查找左边界和有边界
			lb := findLeftBound(nums, target, mid)
			rb := findRightBound(nums, target, mid)
			return []int{lb, rb}
		}

	}
	return []int{-1, -1}

}

func findLeftBound(nums []int, target int, mid int) (lb int) {
	if mid == 0 {
		lb = mid
	} else {
		lb = mid
		for i := 1; i <= mid; i++ {
			// 查找数组中第一个=target的位置
			if nums[mid-i] != target {
				break
			}
			lb--
		}
	}
	return lb
}

func findRightBound(nums []int, target int, mid int) (rb int) {
	if mid == len(nums)-1 {
		rb = mid
	} else {
		rb = mid
		for i := mid + 1; i < len(nums); i++ {
			// 查找第一个大于targert的位置
			if nums[i] != target {
				break
			}
			rb++
		}
	}
	return rb
}